import time,random
def white(white):#装饰符
    print('\033[0;31;50m',white.center(40,"#"))
    return ""

def Always():#选项封装
    print("1.开始游戏","2,退出游戏",sep="\n")
def modos():
    print("游戏模式：\n1.人机大作战\n2.真人大作战")

def Time():#模拟游戏中的加载条
    for i in range(6):
        print("*",end=" ")
        time.sleep(0.5)
    print("\n")


class Juese:#建立一个关于玩家信息的类
    def __init__(self,blood,outfit):#默认血量和攻击力
        self.blood = blood
        self.outfit = outfit

    def Name(self):#名字
        self.name=input("起一个好听的名字吧^^:")
    def Ege(self):#年龄
        self.ega=input("年龄：")

class Room:#房间号
    def __init__(self,roomnumber):
        self.roomnumber=roomnumber
#游戏开始的前言
white("欢迎来到回合制游戏")
print("游戏有两种模式:\n"
      "第一种模式为人机模式，人机模式下用户只需要创建一个玩家，会随机生成人机玩家，\n"
      "   进入房间战斗攻击力是随机的，没有盔甲；\n"
      "第二种为真人模式，用户需要创建两个玩家，进入游戏可以谁为指定攻击方，\n"
      "   进入房间战斗力每人为10，有盔甲加5点防护值")
print('\033[0;33;50m')
while True:#循环进入游戏
    Always()
    print('\033[0;31;50m')
    paste = input("请选择^^:")
    if paste=="1":#进入游戏
        juese = Juese(100,0)#实例化一个玩家
        juese.Name()
        juese.Ege()
        if not juese.ega.isdigit():#判断输入是否正确
            print(white("年龄输入不是数字^^"))
        white("###*###")
        modos()#开始选择游戏模式
        put4 = input("请选择游戏模式：")
        if put4 == "1":
            print(f"{juese.name}玩家已选择人机大作战模式\n正在生成房间中....");Time()
            room = Room("1023");print(f" 已帮你生成新房间，房间号为{room.roomnumber}")
            white("###*###")
            roboot_blood =100;time.sleep(1.5)
            a_name ="小美";a_ega = "18"
            a_blood=100;a_outfit=0
            def Xinxi():#封装一个经常用的玩家信息表
                print('\033[0;33;50m',f'人机玩家：{a_name}     玩家： {juese.name}\n'
                                  f' 年龄:{a_ega}           年龄：{juese.ega}\n'
                                  f' 血量:{a_blood}         血量:{juese.blood}\n'
                                  f' 盔甲防御值:{a_outfit}      盔甲防御值：{juese.outfit}\n'
                                  f' 房间号:{room.roomnumber}',end=" ")
                return " "
            print(Xinxi())
            white("###*###");time.sleep(1)
            put = input(" 是否开始游戏(1是2否):");time.sleep(1.5)
            if put == "1":
                while True:#人机模式
                    my_attack = random.randint(10, 50)
                    roboot_attack = random.randint(10, 50)#随机生成攻击力在10到50之间
                    white("游戏开始")
                    while juese.blood > 0 and roboot_blood > 0:#条件判断玩家血量
                        juese.blood = juese.blood - roboot_attack
                        roboot_blood = roboot_blood - my_attack
                        white("###*###");time.sleep(1.5)
                        print(' \033[0;33;50m你发起了攻击，【敌人】剩余血量' + str(roboot_blood))
                        print(' 敌人向你发起了攻击，【玩家】剩余血量' + str(juese.blood))
                    white("###*###")
                    if juese.blood > 0 and roboot_blood <= 0:# 打印战果
                        print(' 已经击败敌人，你赢了')
                    elif juese.blood <= 0 and roboot_blood > 0:
                        print(' 敌人把你干掉了！')
                    else:
                        print(' 哎呀，你和敌人同归于尽哦^^')
                    white("###*###")
                    print('\033[0;33;50m')

                    put5 = input(" 继续游戏请按1，退出请按2：")
                    if put5=="1":
                        juese.blood =100;roboot_blood = 100
                        continue
                    else:
                        break
        if put4 == "2":#真人大作战模式
            print(f"{juese.name}玩家已选择真人大作战模式^^\n"
                      f"提示：该模式至少需要两个玩家参加哦^^\n"
                      f"已有玩家：")
            white("###*###")
            print('\033[0;33;50m',f'玩家： {juese.name}\n'
                                  f' 年龄：{juese.ega}\n'
                                  f' 血量:{juese.blood}\n'
                                  f' 盔甲防御值：{juese.outfit}')
            white("###*###")
            print("请再创建一个玩家^^")
            juese_new = Juese(100, 0)
            juese_new.Name();juese_new.Ege()
            if not juese_new.ega.isdigit():
                    print(white("年龄输入不是数字^^"))
            white("###*###")
            room = Room("1023")
            print(f" 已帮你生成新房间，房间号为{room.roomnumber}")
            put6 = input(" 是否给玩家穿戴盔甲:（n:不穿/1:给一号玩家穿/2:给2号玩家穿）")#给玩家戴盔甲
            if put6 == "1":
                    juese.outfit = 5
            elif put6 == "2":
                    juese_new.outfit = 5
            elif put6=="12":
                juese.outfit = 5;juese_new.outfit = 5
            else:
                juese.outfit =0
                juese_new.outfit=0

            white("###*###");time.sleep(1.5)
            print('\033[0;33;50m', f'人机玩家：{juese_new.name}     玩家： {juese.name}\n'
                                   f' 年龄:{juese_new.ega}           年龄：{juese.ega}\n'
                                   f' 血量:{juese_new.blood}         血量:{juese.blood}\n'
                                   f' 盔甲防御值:{juese_new.outfit}      盔甲防御值：{juese.outfit}\n'
                                   f' 房间号:{room.roomnumber}')
            white("###*###")
            put7 = input(" 是否开始游戏(1是2否):");Time()
            if put7=="1":
                while True:
                    attack = 10
                    print(f"欢迎来到真人回合制游戏^^,现在有两名玩家{juese_new.name} ，{juese.name}\n"
                          f'将由您来决定谁是攻击方^^')
                    while juese.blood > 0 and juese_new.blood > 0:
                        put9 = input("请选择(1：玩家1发起攻击/2:玩家2发起攻击)：")
                        if put9=="1":
                            juese.blood = juese.blood - attack+juese.outfit
                            white("###*###")
                            print(f'\033[0;33;50m玩家{juese_new.name}发起了攻击，【玩家1号】剩余血量' + str(juese_new.blood))
                            print('             【玩家2号】剩余血量' + str(juese.blood))
                            white("###*###")
                        if put9=="2":
                            white("游戏开始")
                            juese_new.blood = juese_new.blood - attack+juese_new.outfit
                            white("###*###")
                            print('\033[0;33;50m')
                            print(f'玩家{juese.name}发起了攻击，【玩家1号】剩余血量' + str(juese_new.blood))
                            print('             【玩家2号】剩余血量' + str(juese.blood))
                            white("###*###")
                    if juese.blood > 0 and juese_new.blood <= 0:  # 打印战果
                        print(f' 玩家{juese.name}胜利啦^^')
                    elif juese.blood <= 0 and juese_new.blood > 0:
                        print(f' 玩家{juese_new.name}胜利啦^^')
                    else:
                        print(' 哎呀，你们同归于尽哦^^')
                    white("###*###")
                    print('\033[0;33;50m')
                    put11 = input(" 继续游戏请按1，退出请按2：")
                    if put11 == "1":
                        juese.blood = 100;roboot_blood = 100
                        continue
                    else:
                        break
    if paste == "2":#退出
        print("祝你生活愉快^^,下次再见啦")
        break













